Many offices can generate a high volume of printer output or require high print rates to meet deadlines. When these needs are fairly constant, large, high-production printers and associated hardware may be required. These high-production units are expensive to procure and maintain and, generally, are only made economically feasible by a constant high demand for printer output. When printer requirements fluctuate, the costs of these high-production printers are difficult to justify. However, when sporadic, high printer throughput is a necessity, some offices are forced to bear the costs of expensive printer equipment that runs at well below its capacity most of the time.
Cluster printing has been introduced to avoid this problem. Cluster printing involves the use of multiple printers in a network. With cluster printing, print jobs can be sent to a multiple printer network with a capacity that rivals the capacity of expensive, high-throughput equipment. Generally, this network is comprised of multiple lower-production printers that may already exist in an office environment making the cost of the network very manageable.
Through the use of cluster printing, a user may choose to split a single print job among several printers to increase print job speed and decrease print time. Print jobs that include multiple copies may be divided so that each printer in a network prints some of the copies. Other variations of print job distribution may also be implemented, such as color/black-and-white separation.
Cluster printing may be implemented through specialized printers that contain cluster-enabling firmware. When these printers are interconnected via cables, they can share printing jobs. In some cases, the marking engines are connected to enable division of printing tasks between the connected printers.
Other methods of implementing cluster printing functions require the use of additional hardware. Typically, a specialized print server is used. This server is generally a high-performance general purpose computer to which print jobs are directed by the network. Specialized software on the server allows print jobs or copies thereof to be distributed among multiple printers that are managed by the server.
These known cluster printing implementations require specialized printer or server hardware or software to provide cluster printing functions.
Many computing device platforms and printing systems are available today and embodiments of the present invention may be implemented with many of these systems, however, due to the prevalence of the Microsoft Windows® operating system family, embodiments used in conjunction with Windows® systems will be used to illustrate its functions. Accordingly, details of Microsoft Windows 95® and related Microsoft Windows® printing processes will be explained.
Microsoft Windows® operating systems typically employ two file types in the printing process. These file types are Enhanced Metafile (EMF) and raw format (raw) files.
Raw format files are device dependent files that are destined and formatted for a specific device. An example of a raw file is an encapsulated Postscript file, which is formatted to be interpreted by a Postscript printer. EMF files are device independent files that contain graphic device interface (GDI) function calls that reproduce an application's graphic objects on a printer. EMF files are used to quickly record a printed document and return system control to a user. After control is returned to the user, the function calls stored in the EMF file may be executed and sent to the printer in the background.
Files may be recorded for later play back by using a spool file that is written and later de-spooled to a printing device. Spool files may be used for EMF and raw files. However, a print job may also be written directly to a printing device without using a spool file. Some typical printing process scenarios using raw spool files and EMF spool files are described in the related references listed above. A more thorough understanding of these systems and methods may be had through reference to these related applications and through reference to the Microsoft Windows 95® Driver Development Kit (DDK) documentation, the Microsoft Windows 2000® DDK documentation, the Microsoft Windows NT® DDK documentation and the Microsoft Windows XP® DDK documentation, incorporated herein by reference.